| ... | ... | |
|---|
| 152 | 152 | |
|---|
| 153 | 153 | 타이머 종료 3시간 30분 전, 디스코드 공지는 "EPC 2025 및 EPC : Finale의 스토리에 대한 어느 정도의 이해도를 전제로 구성되어 있습니다."라고 말했다. |
|---|
| 154 | 154 | |
|---|
| 155 | | 그리고 오후 8시, 퍼즐이 시작되었다. |
|---|
| 155 | 그리고 오후 8시, 퍼즐이 시작되었다. 현재 16시간 째 해결 중이다. |
|---|
| 156 | 156 | {{{#!folding [#SPECIAL 풀이 보기] |
|---|
| 157 | 157 | ---- |
|---|
| 158 | 158 | {{{#!folding [Phase 1 : Beta] |
|---|
| ... | ... | |
|---|
| 242 | 242 | 역시나 다운로드하고, 압축을 풀고 확장자를 ".png"로 바꾸면, 열쇠 이미지의 일부가 드러난다. |
|---|
| 243 | 243 | }}} |
|---|
| 244 | 244 | {{{#!folding [Phase 3 : Finale] |
|---|
| 245 | {{{#!wiki style="margin: 0 auto; padding: 5px 10px; max-width: 300px; text-align: center; border-radius: 8px; background: linear-gradient(120deg, #dd0, #ff0); color: #000" |
|---|
| 246 | '''{{{+1 경고}}}'''[br]이 해설은 내용이 매우 복잡합니다.}}} |
|---|
| 247 | > 열쇠 데이터가 저희에게 오는 동시에, 이번에도 저희는 열람이 불가능한 데이터가 같이 전송됐어요. 확인 부탁드립니다. |
|---|
| 248 | > |
|---|
| 249 | > 열쇠 데이터 수집도 벌써 막바지네요, 이번에도 힘내주세요..! |
|---|
| 250 | {{{"stdout"}}} 채널에 위와 같은 메세지와 함께 "finale.zip"이 전송된다. |
|---|
| 251 | 이 파일은 총 6중보안이 되어있다. 즉, {{{#!wiki style="display: inline; text-shadow: 0 0 6px #f00; color:#f00" |
|---|
| 252 | '''{{{-1 암호를 6개}}}'''}}} 풀어야 한다. |
|---|
| 253 | |
|---|
| 254 | |
|---|
| 255 | > * finale.zip 안에 파일명 "PASSWORD_epica"가 있다. |
|---|
| 256 | > * 즉, 첫 번째 암호의 정답은 '''"epica"'''. 이 암호를 이용하여 압축을 푼다. |
|---|
| 257 | > * {{{PASSWORD_epica/ level.adofai.sha256/ str/ title^str.zip}}}의 4개 파일이 들어있다. |
|---|
| 258 | |
|---|
| 259 | > * 두 번째 암호는 title^str.zip를 압축 풀기 하는데 사용한다. |
|---|
| 260 | > * str 파일을 확인해보면, 다음과 같은 13바이트 데이터가 있다. |
|---|
| 261 | > * {{{1711171b3d0617000a02191101}}} |
|---|
| 262 | > * 'level.adofai.sha256'와 맞는 adofai 파일의 노래 제목 "STATiCSHOCKER"와 1바이트 씩 XOR 연산한다. |
|---|
| 263 | > * 1711171b3d0617000a02191101 (str) XOR |
|---|
| 264 | > * STATiCSHOCKER (ASCII) |
|---|
| 265 | > * = "DEVOTEDHEARTS" |
|---|
| 266 | > * 즉, 두 번째 암호의 정답은 '''"DEVOTEDHEARTS"'''. 이 암호를 이용하여 압축을 푼다. |
|---|
| 267 | > * {{{fireworks.png}}}의 1개 파일이 들어있다. |
|---|
| 268 | |
|---|
| 269 | > * 세 번째 암호는 압축 풀기할 zip 파일을 찾는 것부터 시작한다. |
|---|
| 270 | > * fireworks.png에 데이터를 살펴보면, png 파일 뒤에 별도 zip 아카이브가 그대로 이어붙어 있다. |
|---|
| 271 | > * 따라서 확장자를 .zip으로 바꾸면 id_rsa.pub/ message.txt/ r.zip 3개 파일이 보인다. |
|---|
| 272 | > * 세 파일 모두 암호화 되었다고 표시되어있디만, 사실은 순수 deflate 압축 데이터일 뿐, 암호화에 대해서는 가짜 플래그이다. |
|---|
| 273 | > * 따라서 헥스 에디터에서 직접 암호화 플래그를 수정하고, 압축을 푼다. |
|---|
| 274 | > * 이제 세 번째 암호를 찾는다. 입력은 r.zip에 한다. |
|---|
| 275 | > * id_rsa.pub를 분석해보면, RSA-1024 공개키가 있다. |
|---|
| 276 | > * 개인키는 [[https://plutos.dazzle.st/home/pluto/.ssh/id_rsa]]에 노출되어 있다. 공개키와 개인키의 모듈러스가 정확히 일치하므로 옳은 개인키이다. |
|---|
| 277 | > * message.txt를 분석해보면, 128 바이트 RSA 암호문이 있다. |
|---|
| 278 | > * 위에서 얻은 개인키를 이용해 RSA-OAEP 패딩으로 복호화한다. |
|---|
| 279 | > * 얻은 텍스트를 평문화하면, |
|---|
| 280 | > * "hello! i hope no one can read this... it's encrypted after all!! cr4zy_prot3ct10n"[* 안녕하세요! 아무도 이걸 읽지 못했으면 좋겠어요… 어쨌든 암호화돼 있으니까요!! cr4zy_prot3ct10n] |
|---|
| 281 | > * 즉, 세 번째 암호의 정답은 '''"cr4zy_prot3ct10n"'''. 이 암호를 이용하여 압축을 푼다. |
|---|
| 282 | |
|---|
| 283 | |
|---|
| 284 | |
|---|
| 245 | 285 | }}} |
|---|
| 246 | 286 | {{{#!folding [Level 3 : DEVOTION] |
|---|
| 247 | 287 | 페이즈 1, 2과 같이 코드 "EPC_FINALE_RESPITE"를 입력하면 세 번째 레벨을 플레이할 수 있다. |
|---|
| ... | ... | |
|---|